package com.threadBase.demo01_establish;
/**
 * 创建线程方法一：继承Thread类重写run方法
 * 1、创建步骤
 *      （1）创建一个类继承Thread类，重写run()方法，将所要完成的任务代码写进run()方法中。
 *      （2）创建Thread类的子类的对象、
 *      （3）调用该对象的start()方法，该start()方法表示先开启线程。
 * 2、总结
 *
 */
public class Method_Extends extends Thread{
    public static void main(String[] args) {
        //标记一下主线程
        System.out.println("我是主线程！");
        //创建对象
        ExtendsThread extendsThread = new ExtendsThread();
        extendsThread.start();
    }

    /**
     * Thread的子类
     */
    static class ExtendsThread extends Thread{
        @Override
        public void run() {
            System.out.println("我是子线程");
        }
    }

    /**
     * 获取当前前程的信息
     */
    public void getThreadInformation(){
        //获取道边当前线程的对象，本地方法，是一个引用
        Thread thread = Thread.currentThread();

        //输出当前线程的名字
        String name = thread.getName();
        System.out.println("子线程的名称："+name);

        //获取当前线程的优先级，默认为5，一共为10.
        int priority = thread.getPriority();
        System.out.println("子线程优先级："+priority);

        //获取当前线程的上下文类加载器
        ClassLoader contextClassLoader = thread.getContextClassLoader();
        System.out.println("上下文类加载器："+contextClassLoader);

        //获取当前线程的标识符
        long id = thread.getId();
        System.out.println("线程的标识符:"+id);

        //当前线程的状态,共有5种，新建，可运行（就绪），等待，阻塞，死亡。
        State state = thread.getState();
        System.out.println("线程的状态:"+state);

        //当前线程的堆栈转储的堆栈跟踪元素的数组。返回线程方法栈中的栈顶和栈底元素。
        StackTraceElement[] stackTrace = thread.getStackTrace();
        System.out.println("线程栈内方法数量："+stackTrace.length);
        System.out.println("第一个方法:"+stackTrace[0]);
        System.out.println("最后一个方法:"+stackTrace[1]);

        //获取当前线程所在线程组
        ThreadGroup threadGroup = thread.getThreadGroup();
        System.out.println("线程所在分组:"+threadGroup);

        //意思是在线程中断设置的一个说明异常
        UncaughtExceptionHandler uncaughtExceptionHandler = thread.getUncaughtExceptionHandler();
        System.out.println("为捕获异常："+uncaughtExceptionHandler);
    }
}
